2008/01/31

Recent entries from same category

  1. VimConf 2023 Tiny に参加しました
  2. Vim で Go 言語を書くために行った引越し作業 2020年度版
  3. Vim をモダンな IDE に変える LSP の設定
  4. ぼくがかんがえたさいきょうの Vim のこうせい 2019年 年末版
  5. VimConf 2019 を終えて

これはすごい

speeddating.vim - Use CTRL-A/X to increment dates, times, and more : vim online

なんと

  • 2008-01-31 11:51:31
  • I,II,III,IV,V
  • 3rd,4th

等いった日付、時刻、数字表記に対して<C-A>や<C-X>で値をインクリメント/デクリメント出来る様にするという凄いスクリプト。

試しに
2008-01-31 11:51:31
の51の所で30分繰り上げる為に「30<C-A>」とした所、
2008-01-31 12:21:31

と時間まで動くじゃないですか!!!

スバラシス...

そのままでも素晴らしいのですが、このスクリプトの素晴らしいのは、拡張出来る所。例えば

~/.vim/after/plugin/speeddating_japanese.vim
scriptencoding utf-8

SpeedDatingFormat %Y年%m月%d日 %H時%M分%S秒

let s:japanese_number = '0123456789'
function! s:japanized_number(string,offset,increment)
    let n = tr(a:string, s:japanese_number, '0123456789') + a:increment
    return [tr(n, '0123456789', s:japanese_number), -1]
endfunction
function! s:function(name)
    return function(substitute(a:name,'^s:',matchstr(expand('<sfile>'), '<SNR>\d\+_'),''))
endfunction
let g:speeddating_handlers += [{'regexp': '-\=\<[1234567890]\+\>', 'increment': s:function('s:japanized_number')}]

こんなファイル用意すれば、先ほどと同様に

2008年01月31日 11時51分31秒

の51の所で「30<C-A>」とすれば

2008年01月31日 12時21分31秒

となってくれるのです。

さらに↑の拡張スクリプトでは、全角数字の上で<C-A>/<C-X>するとインクリメント/デクリメント出来る様にする処理が入っていますので、「550」<C-A>を押下すると「551」とインクリメントされます。

素晴らしい。

あー、豚まん食べたくなってきた。

Posted at by